#include <iostream>
#include <string>
#include <vector>

using namespace std;

void extractFloats(string str, vector<float>& floats) {
    int i = 0;
    while (i < str.length()) {
        // 找到下一个浮点数的起始位置
        while (i < str.length() && !isdigit(str[i]) && str[i] != '-') {
            i++;
        }

        // 如果已经到达字符串末尾，则退出循环
        if (i == str.length()) {
            break;
        }

        // 记录浮点数的起始位置
        int j = i;

        // 找到浮点数的结束位置
        while (j < str.length() && (isdigit(str[j]) || str[j] == '.')) {
            j++;
        }

        // 提取浮点数并保存到数组中
        float f = stof(str.substr(i, j - i));
        floats.push_back(f);

        // 更新下一个浮点数的起始位置
        i = j;
    }
}

int main() {
    string str = "The quick brown 1.23 fox jumps over the 4.56 lazy dog.hfakjlhl:484,fnakba:25.36";
    vector<float> floats;
    extractFloats(str, floats);

    // 输出提取出的浮点数
    for (int i = 0; i < floats.size(); i++) {
        cout << floats[i] << endl;
    }

    return 0;
}//